package com.feicheng.iou.util;

import cn.hutool.core.util.StrUtil;
import com.feicheng.iou.entity.PaymentItem;
import com.feicheng.iou.pojo.ResultPaymentItemPOJO;
import lombok.extern.slf4j.Slf4j;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName countUtil
 * @Description 分期计算工具
 * @Author luoxin
 * @Date 2021/8/25 10:17 上午
 */
@Slf4j
public class CountUtil {

    /**
     * @Author luoxin
     * @Description 计算总应收
     * @Date 10:59 上午 2021/8/25
     * @param null
     * @return
     */
    public static BigDecimal getAllreceivable(List<PaymentItem> paymentItems) {

        //定义一个总数应收的数
        BigDecimal allpayable = new BigDecimal(0);
        for (PaymentItem paymentItem : paymentItems) {
            //取得应付金额
            BigDecimal payable = paymentItem.getPayable();;
            //总应收等于所有应付想家
            allpayable = allpayable.add(payable);
            //如果付款，则应收减去已经付款的应付
            if (paymentItem.getPayDate() != null) {
                allpayable = allpayable.subtract(payable);
            }
        }
        return allpayable;
    }
    public static BigDecimal getTotal(List<PaymentItem> paymentItems) {

        //定义一个总数应收的数
        BigDecimal allpayable = new BigDecimal(0);
        for (PaymentItem paymentItem : paymentItems) {
            //取得应付金额
            BigDecimal payable = paymentItem.getPayable();;
            //总应收等于所有应付想家
            allpayable = allpayable.add(payable);
        }
        return allpayable;
    }
    /**
     * @Author luoxin
     * @Description 计算条件内总应收
     * @Date 11:00 上午 2021/8/25
     * @param null
     * @return
     */
    public static BigDecimal getTimeReceivable(List<ResultPaymentItemPOJO> paymentItems) {

        //定义一个总数应收的数
        BigDecimal allpayable = new BigDecimal(0);
        for (ResultPaymentItemPOJO paymentItem : paymentItems) {
            //取得应付金额
            BigDecimal payable = paymentItem.getPaymentItem().getPayable();
            //总应收等于所有应付相加
            allpayable = allpayable.add(payable);

        }
        return allpayable;
    }

    /**
     * @Author luoxin
     * @Description 计算条件内总未收
     * @Date 11:00 上午 2021/8/25
     * @param null
     * @return
     */
    public static BigDecimal getUncollected(List<ResultPaymentItemPOJO> paymentItems) {

        //定义一个总数应收的数
        BigDecimal allpayable = new BigDecimal(0);
        for (ResultPaymentItemPOJO paymentItem : paymentItems) {
            //取得应付金额
            BigDecimal payable = paymentItem.getPaymentItem().getPayable();
            //总应收等于所有应付想家
            allpayable = allpayable.add(payable);
            //如果付款，则应收减去已经付款的应付
            if (paymentItem.getPaymentItem().getPayDate() != null) {
                allpayable = allpayable.subtract(payable);
            }
        }
        return allpayable;
    }

    /**
     * @Author luoxin
     * @Description 条件内总计
     * @Date 11:23 上午 2021/8/25
     * @param null
     * @return
     */
    public static BigDecimal getTimeTotalReceivable(List<ResultPaymentItemPOJO> paymentItems) {

        //定义一个总数应收的数
        BigDecimal allpayable = new BigDecimal(0);
        for (ResultPaymentItemPOJO paymentItem : paymentItems) {
            //取得应付金额
            BigDecimal payable = paymentItem.getPaymentItem().getPayable();
            //如果付款，则总计再加
            if (paymentItem.getPaymentItem().getPayDate() != null) {
                allpayable = allpayable.add(payable);
            }
        }
        return allpayable;
    }
}
